<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
/* 
    ts更像后端
    安装
        npm install -g typescript
        cnpm install -g typescript
        或者
        yarn global add typescript(推荐)
    使用

    tsconfig.json
        tsc --init 生成配置文件
        outDir 编译后的文件输出路径
        自动编译设置-终端>运行任务>typescript>监视
    
    定义变量
        var flag:boolean = true
        var flag:any = true //任意类型
        var a:number|string = 1;//多类型
    定义数组
        var arr:number[] = [1,2,3]
        var str:string[] = ['1', '2', '3']
    元组类型
        let arr:[string, number, boolean] = ['str', 1.3, true]
    枚举类型
        enum Flag {success=1, error=-1}
        var f:Flag = Flag.success
        console.log(Flag.error)

        如果不赋值,默认为索引值orang以上一个值为基准 red-0  blue-5  orang-6
        enum Color {red, blue=5, orang}
        var color:Color = Color.blue
    任意类型
        var a:any = null;
    返回值
        // void 无返回值
        function fn():void{
        }
        function fn():string{
            return 'fn'
        }
    参数
        常规参数
            function fn(name: string, age:number):void{
            }
            fn('露西', 3)
        可选参数 ?
            function fn(name: string, age?:number):void{
            }
            fn('露西')
        默认参数
            function fn(name: string, age:number=10):void{
            }
            fn('露西')
        剩余参数
            function sum(...result:number[]):number{
                let n = 0
                result.map(item=>n+=item)
                return n
            }
            sum(1,2, 3)
    函数重载
        同名函数不同参数,重载函数            
        function getInfo(name:string):string;
        function getInfo(name:string, age:number):string;
        function getInfo(name: any, age?:any):any{
            return name+'--'+age
        }
    类
        class P{
            name:string;
            constructor(name:string){
                this.name = name
            }
            getName():string{
                return this.name
            }
            setName(name:string):void{
                this.name = name
            }
        }
        var p = new P('星河')
        p.setName('星星')
        console.log(p.getName())

        class Web extends P{
            constructor(name:string){
                super(name)
            }
        }
        var w = new Web('Web')
        w.setName('newWeb')
        console.log(w.getName())
    修饰符
        public 默认 本类,子类,外部可以访问
        protected 本类,子类可以访问
        private 本类可以访问





    es5的对象冒充可以继承构造函数的属性和方法,但无法继承原型链
*/


</script>
</html>